Skip to content

Support relative and absolute path keys in fileWindows lookup - #1213

Open
nordicnode wants to merge 1 commit into
CodebuffAI:mainfrom
nordicnode:fix-read-files-window-path-resolution
Open

Support relative and absolute path keys in fileWindows lookup#1213
nordicnode wants to merge 1 commit into
CodebuffAI:mainfrom
nordicnode:fix-read-files-window-path-resolution

Conversation

@nordicnode

Copy link
Copy Markdown

Support relative and absolute path keys in fileWindows lookup

Summary

• In sdk/src/tools/read-files.ts, resolve fileWindows using filePath, relativePath, or fullPath.
• Previously, windows was looked up strictly via fileWindows?.[filePath]. If filePaths contained an alias (e.g. ./src/file.ts or an absolute path /cwd/src/file.ts) while fileWindows was keyed by the canonical relativePath (src/file.ts), or vice versa, the lookup evaluated to undefined.
• When windows is undefined while fileWindows is enabled, the code defaulted to [{}], dumping the whole file from line 1 and discarding the model's requested window offset/limit.
• Adding fallback lookups for fileWindows?.[relativePath] and fileWindows?.[fullPath] ensures requested windows are accurately applied regardless of path format.
• Adds regression tests in sdk/src/__tests__/read-files.test.ts verifying window resolution across relative, dot-slash, and absolute path variations.

Test plan

[✓] bun test src/__tests__/read-files.test.ts — 40 pass, 0 fail
[✓] bun run --cwd sdk typecheck — 0 errors
[✓] PR hygiene check passed

@codebuff-team

Copy link
Copy Markdown
Contributor

Good catch and a clean, minimal fix. The core issue is real: fileWindows is keyed inconsistently relative to how filePaths may be passed in (dot-relative, bare-relative, or absolute), and a strict [filePath] lookup silently falls through to [{}], which discards the caller's requested offset/limit and dumps the whole file. That's a legitimate bug with observable impact.

The fix in sdk/src/tools/read-files.ts (lines ~116-122) adds fallback lookups against relativePath and fullPath, which covers the three cases demonstrated in the new tests. The three added tests in read-files.test.ts are well-targeted and each isolate one path-format mismatch, which is what I'd want to see for a fix like this.

One thing worth flagging for review: the precedence order is filePath -> relativePath -> fullPath. If two different keys in fileWindows happen to both match (e.g. via aliasing), the first non-nullish one wins silently; that's probably fine in practice since normal callers wouldn't set conflicting entries, but it's worth a maintainer's eye. Also worth checking whether relativePath/fullPath are always defined at this point in the function (the fullPath ? guard suggests not always), so it'd be good to confirm no other callers rely on the old strict-only behavior.

Overall this is a small, correct, well-tested change to a shared SDK path-resolution helper — worth porting.

@codebuff-team codebuff-team added bot:triaged Classified by the community triage bot pr:port-candidate Worth porting into the private source tree labels Sep 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bot:triaged Classified by the community triage bot pr:port-candidate Worth porting into the private source tree

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants